package com.africanmoviesmobile.webservice.inf;

import java.io.IOException;
import java.util.Hashtable;

import org.pixmob.httpclient.HttpClientException;

import com.africanmoviesmobile.webservice.AsyncCallback;
import com.africanmoviesmobile.webservice.WebServiceException;

public interface User extends WebserviceObject{

	public int getId();
	
	public String getName();
	
	public String getEmail();
	
	public Wishlist[] getWishlist(Hashtable<String, String> params) throws HttpClientException, IOException, WebServiceException;
	public void getWishlist(final Hashtable<String, String> params, final AsyncCallback listener, final Object state);
	
	public boolean movieInWishlist(int movieId) throws HttpClientException, IOException, WebServiceException;
	
	public boolean addWishlist(int movieId) throws HttpClientException, IOException, WebServiceException;
	public void addWishlist(final int movieId, final AsyncCallback listener, final Object state);
	
	public boolean deleteWishlist(int movieId) throws HttpClientException, IOException, WebServiceException;
	public void deleteWishlist(final int movieId, final AsyncCallback listener, final Object state);
	
	public Playlist[] getPlaylist(Hashtable<String, String> params) throws HttpClientException, IOException, WebServiceException;
	public void getPlaylist(final Hashtable<String, String> params, final AsyncCallback listener, final Object state);
	
	public boolean movieInPlaylist(int movieId) throws HttpClientException, IOException, WebServiceException;
	
	public boolean addPlaylist(int movieId) throws HttpClientException, IOException, WebServiceException;
	public void addPlaylist(final int movieId, final AsyncCallback listener, final Object state);
	
	public Request[] getRequests(Hashtable<String, String> params) throws HttpClientException, IOException, WebServiceException;
	public void getRequests(final Hashtable<String, String> params, final AsyncCallback listener, final Object state);
	
	public boolean addRequest(Hashtable<String, String> data) throws HttpClientException, IOException, WebServiceException;
	public void addRequest(final Hashtable<String, String> data, final AsyncCallback listener, final Object state);
	
	public boolean deleteRequest(int requestId) throws HttpClientException, IOException, WebServiceException;
	public void deleteRequest(final int requestId, final AsyncCallback listener, final Object state);
	
	public boolean updateInfo(Hashtable<String, String> data) throws HttpClientException, IOException, WebServiceException;
	public void updateInfo(final Hashtable<String, String> data, final AsyncCallback listener, final Object state);
	
	public int getResultPageCount();
}
